#!/usr/bin/env python
# -*- coding:utf-8 -*-

import json

##########################################################
#输出用户的查看
def fetch():
    user_input=raw_input('请输入backend：')
    index_list=['backend ',user_input,'\n']
    index_str=''.join(index_list)
    if index_str in lines:
        www_num=lines.index(index_str)
        print lines[www_num],lines[www_num+1]
    else:
        print '没有这个记录'
##########################################################
#把用户的输入做处理，add和del都用
def input_change(**dic):
    #求出添加backend的域名，组成列表,再转换成字符串，以备和server行合并；
    domain=dic.get('backend')
    global user_domain      #声明全局变量，add（）和del（）里要用
    user_domain=''.join(["backend ",domain,'\n'])
    #求出后端服务器地址，权重，最大连接数，组成列表，join成字符串；
    record=dic.get('record')
    server=str(record['server'])
    weight=str(record['weight'])
    maxconn=str(record['maxconn'])
    global user_server
    user_server=' '.join(["        server",server,"weight",weight,"maxconn",maxconn,'\n'])

##########################################################
#add和del里都要用到
def write_file():
    #把最后得到lines列表合并成字符串并写入源文件
    all_write=''.join(lines)
    #写入原文件
    with open('config','w') as fw:
        fw.write(all_write)
        fw.flush()

##########################################################
#添加新记录
def add():
    global user_input
    user_input=raw_input('请输入要添加的记录：')
    #user_input='{"backend": "test.oldboy.org","record":{"server": "100.1.7.9","weight": 20,"maxconn": 30}}'
    #用户输入的input类型为字符串，转换成它原有的格式。
    user_dict=json.loads(user_input)
    input_change(**user_dict)
    #如果此域名已存在，而且server信息不在配置中，就将server信息写入此域名下；
    if user_domain in lines :
        if user_server in lines:
            print '已有此条分发！'
        else:
            #找出此域名的下标位置
            domain_num=lines.index(user_domain)
            #在域名的下一行，即下标+1处插入
            lines.insert(domain_num+1,user_server)
            write_file()
            print '此条记录已添加'
    else:   #如果不存在，就追加此域名的所有信息；
        with open('config','a') as fa:
            fa.write(user_domain)
            fa.write(user_server)

##########################################################
#删除记录
def delete():
    global user_input
    user_input=raw_input('请输入要删除的记录：')
    #user_input='{"backend": "test.oldboy.org","record":{"server": "100.1.7.9","weight": 20,"maxconn": 30}}'
    #用户输入的input类型为字符串，转换成它原有的格式。
    user_dict=json.loads(user_input)
    input_change(**user_dict)
    if user_server in lines:
        lines.remove(user_server)
        write_file()
        print '此条记录已删除'
    else:
        print '没有此条记录'

##########################################################
#main
while True:
    li=['获取ha记录','增加ha记录','删除ha记录','退出']
    for k,v in enumerate(li,1):
        print k,v
    num = raw_input('请输入操作序号：')
    with open('config','r') as f:
        lines=f.readlines()
    if num=='1':
        fetch()
    elif num=='2':
        add()
    elif num=='3':
        delete()
    elif num=='4':
        break
    else:
        print "输入错误"